using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

[CreateAssetMenu(menuName = "SOInstance/Event/VoidEvent")]
public class VoidEventSO : ScriptableObject
{
    public UnityAction OnEventRaised;
    public UnityAction<int> OnEventRaisedWithInt;
    public UnityAction<string> OnEventRaisedWithString;

    public UnityAction<SceneType, SceneType> OnSceneTypeChanged;
    public UnityAction<GameState, GameState> OnGameStateEventChanged;

    public void RaiseEvent()
    {
        OnEventRaised?.Invoke();
    }

    public void RaiseEvent(int value)
    {
        OnEventRaisedWithInt?.Invoke(value);
    }

    public void RaiseEvent(string value)
    {
        OnEventRaisedWithString?.Invoke(value);
    }

    public void RaiseEvent(SceneType last, SceneType cur)
    {
        OnSceneTypeChanged?.Invoke(last, cur);
    }
    public void RaiseEvent(GameState last, GameState cur)
    {
        OnGameStateEventChanged?.Invoke(last, cur);
    }
}